<!DOCTYPE html>
<html lang="en">
<head>
    <meta  http-equiv="content-type" content="text/html" charset="utf-8"/>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //var obj = new Object();
        var obj ={};
        obj.name = "zhangshan";
        obj.sex = "男";
        obj.sayName = function(){
            alert(obj.name);
        }
        /**
         * 类的概念
         * 第一种：工厂模式

         function createPerson(name,sex,age){
            var o={};
            o.name = name;
            o.sex = sex;
            o.age = age;
            o.sayName = function(){
                alert(this.name);
            }
            return o;
        }

        var p1 = createPerson('zs','男',20);
        var p2 = createPerson('z4','男',24);

        alert(p1.sex);
        p1.sayName(); */


        /**
         * 第二种：构造函数式(函数第一个字母大写：规范，表示一个类)
         */
         function  Person(name,age,sex){
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sayName = function(){
                alert(this.name);
            }
        }
        var p1 = new Person("xiaoa",30,"男");
        var p2 = new Person("xiaob",30,"男");
        p1==p2;//false   类的模板会创建出不同的实例
        p1.constructor = Person;//true
        p2.constructor = Person;//true

        p1 instanceof Person;//true   //判断是不是谁的实例
        p1 instanceof Object;//true


        //创建对象的两种方式
        //第一种  构造函数式
        var p1 = new Person("xiaoa",30,"男");//构造函数式
        //第二种  当做方法
        var p2 = Person("xiaoa",30,"男");
        Person("xiaoa",30,"男");//相当于挂在window上
        //第三种   在另一对象的作用域中去调用
        var o = new Object();
        Person.call(o,'小四',39,'女');
        alert(o.name);
    </script>
</head>
<body>

</body>
</html>